package citasManager;

import java.io.IOException;
import java.util.Vector;

import expresionesManager.Cita;
import expresionesManager.Expresion;
import expresionesManager.Referencia;
import pdfManager.PDFAdmin;

public class ReferenceBuilder {
	/*clase que se encargara de ir armando las referencias entre los distintos articulos, verificando si existen autores, referencias
	 * etc, caso contrario crea una nueva. Se deben incorporar metodos que realicen dichas validaciones..
	 * 		
	*/
	 
	
	
	public void processFile(String path, Expresion expresion) throws IOException{
		PDFAdmin pdf = new PDFAdmin(path);
		Vector foundCitas = new Vector();
		Vector foundRefs = new Vector();
		int lastPage = 0;
		String uppperAutCita,uppperAutRef="";
		boolean flag = true;
		for (int i = 0; i < pdf.cantPages() && flag; i++){
				lastPage = i;
				if (!expresion.isReferencesSection(pdf.getPage(i))){
					foundCitas.addAll(expresion.extraerCitas(pdf.getPage(i)));//obtengo todas las citas encontradas.. lo siguiente es obtener referencias del final
				}else{
					foundCitas.addAll(expresion.extraerCitas(pdf.getPage(i)));//obtengo todas las citas encontradas.. lo siguiente es obtener referencias del final
					flag = false;
				}			
		
		}
		
		if (lastPage<=pdf.cantPages()){	
			//a partir de esta pagina estoy ubicado en la seccion de referencias.
			//si llegue al final del archivo no tiene referencias explicitas
			for (int i = lastPage; i <= pdf.cantPages(); i++) {	System.out.println("Pagina nro: "+i+"  cantpages : "+pdf.cantPages());
				foundRefs.addAll(expresion.extraerReferencias(pdf.getPage(i)));
				System.out.println("TERMINO DE EVALUAR PAGINA................ "+i);
			}			
		}

		
		expresion.actualizarBase(foundCitas, foundRefs);//compara citas con referencias y actualiza cuando corresponda la bd
		
		
		
	}

	
}
